// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

{%- set header_guard = "%s_CONNECTIVITY_FORWARD_H_"|format(
        module.path|upper|replace("/","_")|replace(".","_")|
            replace("-", "_")) %}

{%- macro namespace_begin() %}
{%-   for namespace in namespaces_as_array %}
namespace {{namespace}} {
{%-   endfor %}
{%- endmacro %}

{%- macro namespace_end() %}
{%-   for namespace in namespaces_as_array|reverse %}
}  // namespace {{namespace}}
{%-   endfor %}
{%- endmacro %}


#ifndef {{header_guard}}
#define {{header_guard}}

// This header is for internal use. Don't include it directly. Insteadly,
// include:
//   {{module.path}}-connectivity.h

{{namespace_begin()}}

{%- for interface in module.interfaces %}
class {{interface.mojom_name}}TestProvider;
class {{interface.mojom_name}}TestConsumer;
{%-   for enum in interface.enums %}
class {{interface.mojom_name}}_{{enum.mojom_name}}DataGenerator;
{%-   endfor %}
{%- endfor %}

{%-  for struct in module.structs %}
class {{struct.mojom_name}}DataGenerator;
class {{struct.mojom_name}}NullableDataGenerator;
{%-   for enum in struct.enums %}
class {{struct.mojom_name}}_{{enum.mojom_name}}DataGenerator;
{%-   endfor %}
{%-  endfor %}

{%-  for union in module.unions %}
class {{union.mojom_name}}DataGenerator;
class {{union.mojom_name}}NullableDataGenerator;
{%-  endfor %}

{%-  for enum in module.enums %}
class {{enum.mojom_name}}DataGenerator;
{%-  endfor %}

{{namespace_end()}}

#endif  // {{header_guard}}
